home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d13 / excon.arc / CONDRV.DOC < prev    next >
Text File  |  1986-09-29  |  28KB  |  675 lines

  1. ********************************************************************************
  2.      Enhanced Console Device Driver, Copyright (c) 1986 Anthony Zackin
  3. ********************************************************************************
  4.  
  5. The syntax of the Enhanced Console Device Driver commands is similar to the DOS
  6. extended screen and keyboard control functions defined in the DOS Technical
  7. Reference Manual. The functions defined here are somewhat more complex since
  8. the data sent to the driver must consist of a set of operations and strings to
  9. enable the creation of the screen display buffer. The basic syntax is:
  10.  
  11.    Esc[{operation-string}:
  12.  
  13. where `Esc' represents the escape character, ASCII 27 (hexadecimal 1B), and
  14. {operation-string} typically consists of a one-byte operation code (op)
  15. possibly followed by an attribute, one or more sets of row/column coordinates,
  16. and perhaps a string to be placed in the buffer. The op codes may have several
  17. variants which are created by adding 128, 64, 32, etc. to the base value defined
  18. below.
  19.  
  20. When the Enhanced Console Driver has been installed at system boot time (by a
  21. `DEVICE=CONDRVxx.SYS' entry in the CONFIG.SYS file) all console output displayed
  22. via DOS will be examined for the escape sequences defined below. If a legal one
  23. is found the appropriate operation is performed.
  24.  
  25.  
  26. op=0 - Display a window from the current screen buffer (modifier = 128).
  27.  
  28.    Esc[0;{frow};{fcol};{trow};{tcol};{srow};{scol}:
  29.    Esc[128;{window};{frow};{fcol};{trow};{tcol};{srow};{scol}:
  30.  
  31.      - displays an explicitly defined window ({frow},{fcol}) through
  32.        ({trow},{tcol}) of the current buffer; if any of the row or column values
  33.        are omitted then the current default values are used (set by Esc[1 ... or
  34.        by builtin defaults, normally, 1,1,25,80,1,1); if row/column values are
  35.        specified then row/column values to their left may not be omitted
  36.  
  37.      - all arguments are optional
  38.        - row 1, column 1 corresponds to the upper left-hand corner of the screen
  39.        - {frow};{fcol} (1,1) = starting (from) row,col of the window in the
  40.          screen buffer
  41.        - {trow};{tcol} (1,MAXCOL) = ending (to) row,col of the window in the
  42.          screen buffer
  43.          - MAXCOL = 80 when MODE 80 is in effect, 40 when MODE 40 is in effect
  44.        - row/column coordinates define a `window' to display, not necessarily
  45.          contiguous characters
  46.          - if frow,fcol = 4,21 and trow,tcol = 8,60 then only columns 21 through
  47.            through 60 inclusive of rows 4 through 8 inclusive will be displayed
  48.        - {srow};{scol} (1,1) = starting row,col in the display adapter memory to
  49.          which the window defined above in the screen buffer is moved
  50.          - initial defaults are in parentheses above
  51.        - if op+128 is specified then a window number between 0 and 3 must be
  52.          specified as the first argument; window 0 is assumed otherwise
  53.          - each screen buffer may have up to four predefined windows which may
  54.            be displayed solely by referring to the window number
  55.          - any supplied arguments will override the corresponding predefined
  56.            values
  57.  
  58.      - Esc[: = Esc[0:
  59.        - this sequence is all that is needed to display the currently defined
  60.          screen buffer; for example, via a program such as DEFKEY (see below)
  61.          use Esc[1 ... to define the default window to be displayed and its
  62.          location on the screen and then display it via a PROMPT, e.g., PROMPT
  63.          $e[:
  64.  
  65.      - Example:
  66.  
  67.          Esc[0;1;1;5;10;21;1:
  68.  
  69.          - displays the window from row 1, column 1 to row 5, column 10 at
  70.            screen location = row 21, column 1; the default window and screen
  71.            location values remain unchanged
  72.  
  73.          Esc[: or Esc[0:
  74.  
  75.          - this will display window number 0 from the currently selected buffer
  76.  
  77.          Esc[128;3:
  78.  
  79.          - this will display window number 3 from the currently selected buffer
  80.  
  81. op=1 - Same as op=0 except that the window is not displayed but rather the
  82. defaults for the next display are reset. This permits one program to define a
  83. buffer and another to display whatever has been defined. (Modifier = 128).
  84.  
  85.    Esc[1;{frow};{fcol};{trow};{tcol};{srow};{scol}:
  86.    Esc[129;{window};{frow};{fcol};{trow};{tcol};{srow};{scol}:
  87.  
  88.      - defines the default window parameters for the current window, from
  89.        ({frow},{fcol}) through ({trow},{tcol}) in the current buffer to
  90.        ({srow},{scol}) on the screen
  91.  
  92.      - no data are displayed
  93.  
  94.      - Example:
  95.  
  96.          Esc[1;1;1;5;10;21;1:
  97.  
  98.          - resets window number 0 defaults
  99.            - data to be displayed will come from row 1, column 1 to row 5,
  100.              column 10 of the current buffer
  101.            - display will start at screen location = row 21, column 1
  102.            - note that one or more of these defaults may be temporarily
  103.              overridden by an Esc[0 ... with row/column values specified
  104.  
  105.          Esc[129;3;1;1;5;10;21;1:
  106.  
  107.          - resets window number 3 defaults for the current screen buffer
  108.  
  109. op=2 - Locate a string within the current screen buffer at a specified row and
  110. column; all characters in the string will be given the specified attribute
  111. ({attr}) or will use the currently set default value if {attr} is not specified.
  112. (Modifiers = 128, 64, and 32. The op modifiers are not mutually exclusive but
  113. note that op+96 is not the same as op+64+32.)
  114.  
  115.    Esc[2;{attr};{row};{col};{"string"}:
  116.  
  117.      - op+128 = {attr} omitted (use current screen's current default value)
  118.      - op+64  = {row};{col} omitted (start at next position)
  119.      - op+32  = row value is added to current row; column is absolute
  120.        (row value not incremented if cursor column position = 1)
  121.      - op+96  = {row};{col} omitted but assumed to be current row+1;1, viz.,
  122.        {CR}{LF} (row value not incremented if cursor column position = 1)
  123.  
  124.      - the current attribute value remains unchanged
  125.  
  126.      - Example:
  127.  
  128.          Esc[2;116;1;1;"HELLO ":
  129.          Esc[66;5;"THERE":
  130.          Esc[226;"------------------------------------------------------":
  131.  
  132.          - puts `HELLO ' in the first five positions of the buffer as red on
  133.            white; `THERE' follows immediately in magenta on black; finally a
  134.            line of dashes is displayed in the first position of the next line
  135.            using the current default attribute (whatever it has been previously
  136.            set to or the initial default, white on black)
  137.  
  138. op=3 - Same as op=2 except that the default attribute byte for the current
  139. screen is reset if an attribute byte is specified.
  140.  
  141.    Esc[3;{attr};{row};{col};{"string"}:
  142.  
  143.      - the attribute byte for the current screen is reset if specified
  144.  
  145.      - Example:
  146.  
  147.          Esc[2;116;1;1;"HELLO ":
  148.          Esc[67;5;"THERE":
  149.          Esc[226;"------------------------------------------------------":
  150.  
  151.          - puts `HELLO ' in the first five positions of the buffer as red on
  152.            white; `THERE' follows immediately in magenta on black with the
  153.            default attribute getting reset accordingly; finally a line of dashes
  154.            using the new current default, magenta on black, is displayed
  155.            starting in the first position of the next line
  156.  
  157.  
  158. op=4 - Clear a window of the current screen buffer, i.e., moves spaces to the
  159. screen buffer window with the specified or current attribute byte. (Modifier =
  160. 128.)
  161.  
  162.    Esc[4;{attr};{frow};{fcol};{trow};{tcol}:
  163.  
  164.      - all arguments are optional
  165.  
  166.      - op+128 = {attr} omitted - use the current default attribute value
  167.  
  168.      - the default attribute byte is not updated
  169.  
  170.      - if any of the row or column values (either the from values or both the
  171.        from and to values) are omitted then the values used will be the current
  172.        settings set by the last op=1 command or by default; note that if {trow}
  173.        is to be specified then {frow} and {fcol} must also be but {tcol} needn't
  174.  
  175.      - row/column coordinates define a `window' to clear, not necessarily
  176.        contiguous characters
  177.        - if frow,fcol = 4,21 and trow,tcol = 8,60 then only columns 21 through
  178.          through 60 inclusive of rows 4 through 8 inclusive will be cleared in
  179.          the currently active buffer
  180.  
  181.      - Example:
  182.  
  183.          Esc[4;112;20;1;25;80:
  184.  
  185.          - clears the current buffer from row 20, column 1 through row 25,
  186.            column 80 to white
  187.  
  188.          Esc[4;0;1;71;25;80:
  189.  
  190.          - clears columns 71 - 80 in all rows of the currently active buffer to
  191.            black
  192.  
  193.          Esc[4:
  194.  
  195.          - clears the currently defined window in the current screen buffer;
  196.            the default attribute byte for the current screen is used to
  197.            determine the background color
  198.  
  199.  
  200. op=5 - Same as op=4 except that the current attribute value for the current
  201. screen is reset to the specified value.
  202.  
  203.    Esc[5;{attr};{frow};{fcol};{trow};{tcol}:
  204.  
  205.      - Example:
  206.  
  207.          Esc[5;112:
  208.  
  209.          - clears the currently defined buffer window and resets the current
  210.            attribute byte to black characters on a white background
  211.  
  212.  
  213. op=6 - Clear (with spaces) from the position after the last located string
  214. (op=2) in the current screen buffer to the end of that line. (Modifier = 128).
  215.  
  216.    Esc[6;{attr}:
  217.  
  218.      - op+128 means {attr} omitted, i.e., use the current attribute value, viz.,
  219.        the value set by the last op=3 or op=5 command which specified an
  220.        attribute byte
  221.        - this is equivalent to specifying Esc[6:
  222.  
  223.      - the attribute value is not reset if specified
  224.  
  225.      - Example:
  226.  
  227.          Esc[2;23;10;1;"*":
  228.          Esc[6;0:
  229.  
  230.          - this will put a white asterisk on a blue background in row 10, column
  231.            1 of the buffer and clear the remainder of the line to black
  232.  
  233.  
  234. op=7 - Same as op=6 except that if an attribute byte is specified, the current
  235. default value will be reset.
  236.  
  237.    Esc[7;{attr}:
  238.  
  239.      - the default attribute value for the current screen is reset if specified
  240.  
  241.      - Example:
  242.  
  243.          Esc[2;23;10;1;"*":
  244.          Esc[7;112:
  245.  
  246.          - this will put a white asterisk on a blue background in row 10, column
  247.            1 of the buffer and clear the remainder of the line to black; in
  248.            addition, the default attribute byte for the current screen will be
  249.            reset to white on black
  250.  
  251.  
  252. op=8 - Set/reset the BIOS flag to control whether direct BIOS calls as well as
  253. DOS calls will be trapped. Also allows the suppression of keyboard redefinition.
  254. (Modifier = 128).
  255.  
  256.    Esc[8;{flag}:
  257.  
  258.      - if {flag} is a 1 then direct BIOS calls will be trapped
  259.      - if {flag} is omitted or anything else then BIOS calls will be ignored by
  260.        the driver, i.e., the BIOS trap will be disabled
  261.  
  262.      - Example:
  263.  
  264.          Esc[8;1:
  265.  
  266.          - this will enable the driver to trap direct BIOS calls
  267.          - issuing this command before going into BASIC will permit BASIC to
  268.            directly stack commands; e.g.,to clear the screen at the end of a
  269.            BASIC program one could specify
  270.  
  271.                 CMD$ = CHR$(34)+"CLS"+CHR$(34)
  272.                 PRINT CHR$(27)+"["+CMD$+";13.";
  273.  
  274.  
  275.          Esc[8:
  276.  
  277.          - this will disable the BIOS call trap
  278.  
  279.    Esc[136;{suppress-count}:
  280.  
  281.      - if op+128 is specified then the flag value controls DOS keyboard
  282.        redefinition:
  283.        - a count other than 255 will be treated as a suppression count; no DOS
  284.          keyboard redefinitions will be interpreted while this value is
  285.          non-zero
  286.        - a flag value of 255 will decrement the suppression count by 1 only if
  287.          the latter is non-zero
  288.        - if {flag} is zero or omitted DOS keyboard redefinition will be enabled
  289.        - DOS keyboard redefinition is enabled by default
  290.  
  291.      - Example:
  292.  
  293.          Esc[136;2:
  294.  
  295.          - this will disable DOS keyboard redefinition so that programs which
  296.            need the native key values will get them and not the redefinitions
  297.          - the suppression count will be set to 2 in this case
  298.          - NOTE: the {suppress-count} value used here should be one greater than
  299.            that for the other commands (CLOCK, for example) since keyboard
  300.            redefinition will be re-enabled as soon as the count goes to zero,
  301.            NOT on the next `Esc[136' command
  302.  
  303.          Esc[136;255:
  304.  
  305.          - this will decrement the keyboard suppression count by 1; normally
  306.            this command will be made part of the system prompt
  307.  
  308.          Esc[136:
  309.  
  310.          - this will re-enable DOS keyboard redefinitions
  311.  
  312.  
  313. op=9 - Set the number of screen rows, 25 or 43 (EGA). (Modifier = 32).
  314.  
  315.    Esc[9;{row-number}:
  316.  
  317.      - if {row-number} is omitted, 25 is assumed
  318.      - use 43 row mode only with the EGA or equivalent and an enhanced color
  319.        display or equivalent
  320.  
  321.  
  322.      - op+32 means that the next {suppress-count} mode commands not specifying
  323.        this modifier will be ignored. When this modifier is specified an extra
  324.        argument, {suppress-count}, is expected before the attribute (if
  325.        specified) which denotes a number between 0 and 255 indicating the number
  326.        of standard (non op+32) commands to ignore. If a value of 255 is used
  327.        all non op+32 commands will be ignored until the {suppress-count} is
  328.        explicitly reset by a command with a 32 modifier. This option is useful
  329.        for temporarily overriding the 43 line mode which may be defined within
  330.        a PROMPT string.
  331.  
  332.        - for op+32 the command syntax is:
  333.  
  334.          Esc[41;{suppress-count};{row-number}:
  335.  
  336.          - if all arguments are omitted then {suppress-count} will be
  337.            interpreted as zero, viz., permit subsequent non op+32 mode commands
  338.  
  339.          - Examples:
  340.  
  341.            Esc[41;2:
  342.  
  343.            - this will suppress the next two standard mode commands; note that
  344.              the third normal mode command, normally from the PROMPT string,
  345.              will reset the display to the desired mode as specified by the
  346.              prompt string
  347.  
  348.            Esc[41;255:
  349.  
  350.            - suppresses all subsequent standard mode commands until the
  351.              {suppress-count} is explicitly reset
  352.  
  353.            - the following is a practical use for this feature; in it it is
  354.              assumed that the PROMPT string contains a mode command. We wish to
  355.              override the default mode for the duration of the dBASE program.
  356.              The CU program is used to define a value for Alt-F1:
  357.  
  358.                CU AF1 "CU MODE 25 SUPPRESS 2}CD\DBASE}DBASE}"
  359.  
  360.                - this sets Alt-F1 to ignore the next two mode commands from the
  361.                  next two system prompts resulting from the cd and dBASE
  362.                  commands so that the prompt string will not reset the default
  363.                  display mode; dBASE is then invoked and, upon the exit of
  364.                  dBASE, the prompt will reset the display to its standard mode
  365.  
  366.  
  367. op=10 - Select the screen buffer. Four buffers are available but only one,
  368. buffer 0, is garanteed to be unaffected by program execution. Buffers 1-3
  369. utilize the graphics memory area of the display adapter and thus will be
  370. destroyed by any application using the graphics mode.
  371.  
  372.    Esc[10;{buffer}:
  373.  
  374.      - {buffer} should be a number from 0 to 3; if omitted then 0 is assumed
  375.      - all subsequent screen operations will be directed to the chosen buffer
  376.        until that value is reset; initially buffer 0 is the one used
  377.  
  378.      - Example:
  379.  
  380.          Esc[10;1:
  381.          Esc[4;0;1;1;1;80:
  382.          Esc[2;64;1;35;"A Title":
  383.          Esc[1;1;1;1;80;13;1:
  384.  
  385.          - the next issuance of Esc[: will cause line one of buffer one to be
  386.            displayed on line 13 of the screen; buffer 0 will be unaffected
  387.  
  388.  
  389. op=11 - Sets the CONDRV version and release values in IACA (0000:04F0)
  390.  
  391.    Esc[11:
  392.  
  393.      - no arguments are required
  394.  
  395.  
  396. op=12 - Adjust timer on/off, location, and attributes. (Modifiers = 128, 64, 32
  397. and 16).
  398.  
  399.    Esc[12;{attr};{row};{col}:
  400.  
  401.      - all arguments are optional
  402.  
  403.      - clock (HH:MMxx where xx=am/pm) is displayed at specified location with
  404.        specified attributes
  405.  
  406.      - if the {row} and/or {col} values are omitted then the clock will not be
  407.        displayed
  408.  
  409.      - op+128 means {attr} omitted, i.e., use the current default value, viz.,
  410.        the attribute value of the last op=12 which specified an attribute
  411.  
  412.      - op+64 means that the colon will blink
  413.  
  414.      - op+32 means that the next {suppress-count} timer commands not specifying
  415.        this modifier will be ignored. When this modifier is specified an extra
  416.        argument, {suppress-count}, is expected before the attribute (if
  417.        specified) which denotes a number between 0 and 255 indicating the number
  418.        of standard (non op+32) commands to ignore. If a value of 255 is used
  419.        all non op+32 commands will be ignored until the {suppress-count} is
  420.        explicitly reset by a command with a 32 modifier. This option is useful
  421.        for temporarily overriding standard clock attributes which may be defined
  422.        within a PROMPT string.
  423.  
  424.        - for op+32 the command syntax is:
  425.  
  426.          Esc[44;{suppress-count};{attr};{row};{col}:
  427.  
  428.          - note that if modifier=128 is also used then {attr} should be omitted
  429.            and row and col values should immediately follow {suppress-count};
  430.            if all arguments are omitted then {suppress-count} will be
  431.            interpreted as zero, viz., permit subsequent non op+32 timer commands
  432.  
  433.          - Examples:
  434.  
  435.            Esc[44;2;4;25;35:
  436.  
  437.            - this will suppress the next two standard timer commands and at the
  438.              same time put the clock in red on black in about the middle of the
  439.              bottom line of the screen. Note that the third normal timer command
  440.              perhaps from the PROMPT string will reset the clock display to the
  441.              standard values
  442.  
  443.            Esc[44;255:
  444.  
  445.            - suppresses all subsequent standard timer commands until the
  446.              {suppress-count} is explicitly reset
  447.  
  448.            - the following is a practical use for this feature; in it it is
  449.              assumed that the PROMPT string contains a timer command. We wish to
  450.              override the timer for the duration of the 123 session. The CU
  451.              program is used to define a value for Alt-F3:
  452.  
  453.                CU AF3 "CU CLOCK cb BLINK SUPPRESS 2 @ 25 35}CD\LOTUS}123}"
  454.  
  455.                - this sets Alt-F3 to move the clock display to line 25, column
  456.                  35 in black on cyan and to ignore the clock commands from the
  457.                  next two system prompts resulting from the cd and 123 commands
  458.                  so that the prompt string will not reset the default clock
  459.                  display; 123 is then invoked and, upon the exit of 123, the
  460.                  prompt will reset the clock to its standard mode
  461.  
  462.  
  463.      - op+16 enables the clock if other arguments are specified or disables the
  464.        clock if Esc[28: alone is specified
  465.  
  466.        - the clock MUST be enabled before any clock function will work,
  467.          consequently the first clock call at least must contain this modifier
  468.        - technically this causes the timer interrupt to be handled by the
  469.          console driver and restored to its initial value by disable
  470.  
  471.  
  472.      - Examples:
  473.  
  474.          Esc[12;112;1;74:
  475.  
  476.          - this will display a black clock on a white background in the upper
  477.            right hand corner of an 80 column screen
  478.  
  479.          Esc[12:
  480.  
  481.          - this will turn off the clock
  482.  
  483.  
  484. op=13 - Set/clear alarm. (Modifier = 128).
  485.  
  486.    Esc[13;"hh:mmxx";{window}:
  487.  
  488.      - all arguments are optional
  489.  
  490.      - op+128 means just sound the alarm immediately; any other arguments will
  491.        be ignored and no pending alarms will be reset
  492.  
  493.      - time ([h]h:mmxx where xx=am/pm) must be specified exactly as clock is
  494.        with a leading space if the hour is only one-digit
  495.  
  496.      - {window} describes a screen buffer window in buffer 0 which will be
  497.        displayed when the alarm goes off (0 - 3)
  498.  
  499.      - any call made while an alarm is ringing will reset the alarm
  500.  
  501.        - if no arguments are specified, any pending alarm is cleared as well
  502.        - depressing both shift keys simultaneously will also reset the alarm;
  503.          the system will beep twice to indicate that the alarm has been reset
  504.  
  505.      Examples:
  506.  
  507.          Esc[13;"12:15pm":
  508.  
  509.          - when the timer contains a matching value of "12:15pm" a bell will be
  510.            generated about every 30 seconds until the alarm is reset
  511.  
  512.          Esc[13;"12:15pm";1:
  513.  
  514.          - this will additionally display window 1 when the alarm sounds
  515.  
  516.          Esc[13:
  517.  
  518.          - this will clear any pending alarm and will turn off the alarm if it
  519.          is going off
  520.  
  521.  
  522. op=14 - Control display, location, and attributes of caps and num lock and print
  523. screen toggle. (Modifiers = 128, 32, and 16).
  524.  
  525.    Esc[14;{attr};{row};{col}:
  526.  
  527.      - all arguments are optional
  528.  
  529.      - 7 character lock display is displayed at the specified location with
  530.        specified attributes
  531.  
  532.      - if the {row} and/or {col} values are omitted then the locks will not
  533.        be displayed
  534.  
  535.      - op+128 means {attr} omitted, i.e., use the current default value, viz.,
  536.        the attribute value of the last op=14 which specified an attribute
  537.  
  538.      - op+32 means that the next {suppress-count} lock commands not specifying
  539.        this modifier will be ignored. When this modifier is specified an extra
  540.        argument, {suppress-count}, is expected before the attribute (if
  541.        specified) which denotes a number between 0 and 255 indicating the number
  542.        of standard (non op+32) commands to ignore. If a value of 255 is used
  543.        all non op+32 commands will be ignored until the {suppress-count} is
  544.        explicitly reset by a command with a 32 modifier. This option is useful
  545.        for temporarily overriding standard lock attributes which may be defined
  546.        within a PROMPT string.
  547.  
  548.        - for op+32 the command syntax is:
  549.  
  550.          Esc[46;{suppress-count};{attr};{row};{col}:
  551.  
  552.          - note that if modifier=128 is also used then {attr} should be omitted
  553.            and row and col values should immediately follow {suppress-count};
  554.            if all arguments are omitted then {suppress-count} will be
  555.            interpreted as zero, viz., permit subsequent non op+32 timer commands
  556.  
  557.          - Examples:
  558.  
  559.            Esc[46;2;4;25;35:
  560.  
  561.            - this will suppress the next two standard lock display commands and
  562.              at the same time put the lock display in red on black in about the
  563.              middle of the bottom line of the screen. Note that the third
  564.              normal lock display command, perhaps from the PROMPT string, will
  565.              reset the lock display to the standard values
  566.  
  567.            Esc[46;255:
  568.  
  569.            - suppresses all subsequent standard lock display commands until the
  570.              {suppress-count} is explicitly reset
  571.  
  572.            - the following is a practical use for this feature; in it it is
  573.              assumed that the PROMPT string contains a lock display command. We
  574.              wish to override the lock display for the duration of the 123
  575.              session. The CU program is used to define a value for Alt-F1:
  576.  
  577.                CU AF3 "CU LOCK SUPPRESS 2}CD\LOTUS}123}"
  578.  
  579.                - this sets Alt-F1 to turn off the lock display, ignore the lock
  580.                  display commands from the next two system prompts resulting
  581.                  from the cd and 123 commands, invoke 123 and then, upon the
  582.                  exit of 123, the prompt string will turn the lock display back
  583.                  on in standard format
  584.  
  585.      - op+16 enables the lock display if other arguments are specified or
  586.        disables the lock display if Esc[30: alone is specified
  587.  
  588.        - the lock display MUST be enabled before any lock display function will
  589.          work, consequently the first lock display call, at least, must contain
  590.          this modifier
  591.        - technically this causes the keyboard interrupt to be handled by the
  592.          console driver and restored to its initial value by disable
  593.  
  594.      - Examples:
  595.  
  596.          Esc[14;112;1;67:
  597.  
  598.          - this will display the locks in black on a white background in the
  599.            upper right hand corner of an 80 column screen in columns 67-73
  600.  
  601.          Esc[14:
  602.  
  603.          - this will turn off the lock display
  604.  
  605.  
  606.  
  607. The following is a summary of the attribute byte values; for more details, see
  608. the IBM PC Technical Reference Manual:
  609.  
  610.    Monochrome case:          Color case:
  611.  
  612.    0 = non-display           16 * (background color) + (foreground color)
  613.    1 = underline
  614.    7 = normal                0  Black [Gray]        4  Red     [Light red]
  615.    112 = reverse video       1  Blue  [Light blue]  5  Magenta [Light magenta]
  616.                              2  Green [Light green] 6  Brown   [Yellow]
  617.                              3  Cyan  [Light cyan]  7  White   [Bright white]
  618.  
  619. For both the color and monochrome cases, add 128 to get a blinking field, and
  620. add 8 to get high intensity; high intensity color values are in brackets, [...].
  621.  
  622.  
  623. To "stack" commands, i.e., make them available to the next DOS read request use
  624. the following display sequence:
  625.  
  626.    Esc[{command-string}.
  627.  
  628. where {command-string} may consist of a DOS command in quotes and/or ASCII
  629. decimal character values separated by semi-colons, e.g., `"CLS";13'. You may use
  630. the CU STACK command to effect this, e.g., `CU STACK "CLS}"'.
  631.  
  632. Stack commands may be issued from the system prompt to allow you to execute a
  633. batch file at every prompt. To do this the special stack commands, `Esc[0.' and
  634. `Esc[1.' are used. Normally when Esc[0. or equivalently, Esc[., is "displayed"
  635. subsequent stack operations will be ignored. When Esc[1. is subsequently
  636. display then the next "display" of Esc[. will re-enable stacking. (Note that
  637. `Esc[1.' is NOT the same as `Esc["1".'; the former represents a binary 1
  638. argument while the latter is the character 1). `$e[.' should be specified after
  639. the stack of the batch file in the prompt prompt string, e.g.,
  640. `$e["BATFILE";13.$e.'. This will suppress subsequent stacking of the batch file
  641. command until specifically reset. Since the system prompt is generated for each
  642. displayed line of a batch file, and at least one must be displaced, e.g., ECHO
  643. OFF, this prevents the batch file from being reinvoked for every prompt caused
  644. by execution of the batch file itself. `ECHO Esc[1.' should be the last
  645. statement in the batch file to permit stacking to be re-enabled for one prompt.
  646. `Esc' refers to the ESCAPE character, ASCII decimal value of 27. It may be
  647. entered into a batch file using EDLIN via `^V[' (Ctrl-V followed by a `[').
  648.  
  649.  
  650. DOS key redefinitions may made via the console driver; see the DOS Technical
  651. Reference manual for details. If a console driver command as described above, or
  652. in the DOS Technical Reference manual, is defined as the new definition for a
  653. key, that command will be issued immediately upon depression of the key. No call
  654. to another program such as CU is needed. This is particularly useful for the
  655. immediated display of windows. For example, to display window 1 whenever the
  656. {Home} key is depressed pass the following string to the console driver:
  657.  
  658.    Esc[0;71;27;"[128;1:"p
  659.  
  660.  
  661. Note that this is equivalent to the more simple "CU HOME DISP WIND 1".
  662.  
  663.  
  664. The CONDRV command of the CU program will append an `{Esc}[' (hexadecimal 27 and
  665. 91 respectively) sequence to tbe beginning of the subsequent string argument.
  666. It may be used to issue the above commands explicitly instead of using the more
  667. limited CU syntax. For example, to associate a clear screen command with the
  668. {PgUp} key one could use "CU PGUP CLS}" or
  669.  
  670.    CU CONDRV '0;73;27;91;"2J."p'
  671.  
  672. Note the need to place the '13.' inside of a quoted string to enable the
  673. carriage return to be evaluated when the key is pressed and not when it is
  674. associated with PGUP.
  675.